3.1 表达式
学习目标:
- 了解 常用的两种测试语句
- 掌握 标准测试语句的格式和特点
- 说出 常用条件表达式种类
- 掌握 2种逻辑表达式的特点和使用场景
- 掌握 3种文件表达式的特点和使用场景
- 了解 4种数字表达式和2种字符串表达式的特点和使用场景
- 应用 2种计算表达式
3.1.1 测试语句
Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0表示成功,值为其他时表示失败。使用专门的测试工具---test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立。
测试语句的两种形式:
- test 条件表
- [ 条件 ]
格式注意:
- 以上两种方法的作用完全一样,后者为常用。
- [ ]与内部的条件表达式之间需要有空格。
- test跟 [ ] 都是用于测试条件表达式是否成立,条件成立,状态返回值是0,条件不成立,状态返回值是1
不添加空格进行操作报错如下(该命令后面就会学到):
root@ubuntu:~# [-x /bin/bash ]
[-x: command not found
可以看到: 两侧没有空格,就会报错,报错原因是shell将[-x当做了一条可执行的命令,但是在path环境路径下找报道名为[-x的可执行文件
数值比较
主要根据给定的两个值,判断第一个与第二个数的关系,如是否大于、小于、等于第二个数。常见选项如下:
- n1 -eq n2 相等
- n1 -gt n2 大于
- n1 -ge n2 大于等于
- n1 -lt n2 小于
- n1 -le n2 小于等于
- n1 -ne n2 不等于
字符串比较
- str1 == str2 str1和str2字符串内容一致
- str1 != str2 str1和str2字符串内容不一致,!表示相反的意思
实践 判断字符是否内容一致
root@ubuntu:~# [ a == a ]
root@ubuntu:~# echo $?
0
root@ubuntu:~# [ a != a ]
root@ubuntu:~# echo $?
1
3.1.2 逻辑表达式
逻辑表达式一般用于判断多个条件之间的依赖关系。 常见的逻辑表达式有:
- &&
- ||
&&符号
命令1 && 命令2
如果命令1执行成功,那么执行命令2
如果命令1执行失败,那么不执行命令2
示例:[ 1 = 1 ] && echo "条件成立" 条件成立 [ 1 = 2 ] && echo "条件成立"
||符号
命令1 || 命令2
1 如果命令1执行成功,那么不执行命令2
2 如果命令1执行失败,那么执行命令2
示例:[ 1 = 2 ] || echo "条件不成立" 条件不成立 [ 1 = 1 ] || echo "条件不成立"
3.1.3 文件表达式
-f 判断输入内容是否是一个文件
示例:
[ -f weizhi.sh ] && echo "是一个文件"
是一个文件
[ -f weizhi.sddh ] || echo "不是一个文件"
不是一个文件
-d 判断输入内容是否是一个目录
示例:
[ -d weizhi.sddh ] || echo "不是一个目录"
不是一个目录
mkdir nihao
[ -d nihao ] && echo "是一个目录"
是一个目录
-x 判断输入内容是否可执行
示例:
[ -x age.sh ] || echo "文件没有执行权限"
文件没有执行权限
[ -x test.sh ] && echo "文件有执行权限"
文件有执行权限
3.1.4 计算表达式
定义:
计算表达式,简单来说就是对具体的内容进行算数计算
格式:
- $(( 计算表达式 ))
- let 计算表达式
注意:$(())中只能用+-*/和()运算符,并且只能做整数运算
$(())使用示例
root@ubuntu:~# n=100
root@ubuntu:~# echo $(($n/5))
20
let使用示例
root@ubuntu:~# i=1
root@ubuntu:~# let i=i+7
root@ubuntu:~# echo $i
8
注意:
表达式必须是一个整体,中间不能出现空格等特殊字符
3.1小结:
- 了解 常用的两种测试语句
- 掌握 标准测试语句的格式和特点
- 说出 常用条件表达式种类
- 掌握 2种逻辑表达式的特点和使用场景
- 掌握 3种文件表达式的特点和使用场景
- 了解 4种数字表达式和2种字符串表达式的特点和使用场景
- 应用 2种计算表达式